/**   
* @Title: ContentServiceImpl.java 
* @Package com.taotao.rest.service.impl 
* @Description: TODO(用一句话描述该文件做什么) 
* @author hekai   
* @date 2017年3月1日 下午9:53:25 
* @version V1.0   
*/
package com.taotao.rest.service.impl;

import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.taotao.common.pojo.TaotaoResult;
import com.taotao.common.utils.JsonUtils;
import com.taotao.mapper.TbContentMapper;
import com.taotao.pojo.TbContent;
import com.taotao.pojo.TbContentExample;
import com.taotao.pojo.TbContentExample.Criteria;
import com.taotao.rest.compoent.JedisClient;
import com.taotao.rest.service.ContentService;

/**
 * @ClassName: ContentServiceImpl
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author hekai
 * @date 2017年3月1日 下午9:53:25
 * 
 */
@Service
public class ContentServiceImpl implements ContentService {

	@Autowired
	private TbContentMapper tbContentMapper;

	@Autowired
	private JedisClient jedisClient;
	
	@Value("${REDIS_CONTENT_KEY}")
	private String REDIS_CONTENT_KEY;
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.taotao.rest.service.ContentService#getContentList()
	 */
	@Override
	public List<TbContent> getContentList(Long id) {
		
		//先查询缓存
		try {
			String json = jedisClient.hgert(REDIS_CONTENT_KEY, id + "");
			if(StringUtils.isNoneBlank(json)){
				//json转换成list
				List<TbContent> list = JsonUtils.jsonToList(json, TbContent.class);
				return list;
			}
				
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		// 根据cid查询内容列表
		TbContentExample example = new TbContentExample();
		Criteria criteria = example.createCriteria();
		criteria.andCategoryIdEqualTo(id);
		List<TbContent> list = tbContentMapper.selectByExampleWithBLOBs(example);

		//返回结果之前向redis中添加数据
		
		try {
			//为了规范key使用hash
			//定义一个保存内容的key，hash中的每个项就是cid
			//value是list，需要把list转换成json数据
			jedisClient.hset(REDIS_CONTENT_KEY, id + "", JsonUtils.objectToJson(list));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return list;
	}
	/* (non-Javadoc)
	 * @see com.taotao.rest.service.ContentService#syncContent(java.lang.Long)
	 */
	@Override
	public TaotaoResult syncContent(Long id) {
		jedisClient.hdel(REDIS_CONTENT_KEY, id + "");
		return TaotaoResult.ok();
	}

}
















